#include <stdio.h>

//将三个数字由大到小排序
//第一种
int main1()
{
    int a,b,c;
    scanf("%d %d %d",&a, &b, &c);

    int max = a;
    int mid = b;
    int min = c;
    if(b > max)
    {
        max = b;
        if(a < c)
        {
            min = c;
        }
    }
    if(c > max)
    {
        max = c;
        if(b < a)
        {
            min = b;
            mid = a;
        }
        else
            min = a;
    }

    printf("%d %d %d\n", max, mid, min);

    return 0;
}

//第二种
int main2()
{
    int a, b, c;
    scanf("%d %d %d", &a, &b, &c);
    int max = a > b ? a : b;
    max = max > c ? max : c;
    int min = a < b ? a : b;
    min = min < c ? min : c;
    
    int mid = a + b + c - max - min;
    printf("%d %d %d\n", max, mid, min);
    return 0;
}

//写一个代码打印1-100之间所有3的倍数的数字

int main3()
{
    int i = 3;
    while( i <= 100)
    {
        printf("%d ", i);
        i+=3;
    }
    printf("\n");
    return 0;
}


//给定两个数，求这两个数的最大公约数
//例如：
//输入：20 40 
//输出：20

//求最大公约数 用辗转相除法
int main4()
{
    int a,b;
    scanf("%d %d", &a, &b);
    int ret = a % b;
    while(ret)
    {
        a = b;
        b = ret;
        ret = a % b;
    }

    printf("%d\n", b);
    return 0;
}

//是闰年返回1，不是闰年返回0
int is_leap_year(int year)
{
    if( (year%4 == 0 && year%100 != 0) || (year%400 == 0))
        return 1;
    else
        return 0;
}
//打印1000年到2000年之间的闰年
int main5()
{
    //判断闰年的方式
    //1.能被4整除，不能被100整除，
    //2。能被400整除
    int i = 0;
    for(i = 1000; i <= 2000; i++)
    {
        if(is_leap_year(i))
            printf("%d ", i);
    }
    return 0;
}

//写一个代码：打印100~200之间的素数
//第一个版本 用 n去试除 n - 1
int is_prime_number1(int n)
{
    int flag = 1;
    int i = 0;
    for(i = 2; i < n; i++)
    {
        if(n%i == 0)
            flag = 0;
    }
    if(flag)
        return 1;
    else
        return 0;
}

//第二个版本 优化到 2 -sqrt(n)
#include <math.h>
#include <stdio.h>
int is_prime_number(int n)
{
    int i = 0;
    //for(i = 2; i <= (int)sqrt(n); i++)
    {
        if(n%i == 0)
            return 0;
    }
    return 1;
}
int main6()
{
    int i = 0;
    for(i = 100; i <= 200; i++)
    {
        if(is_prime_number(i))
            printf("%d ", i);
    }
    return 0;
}

//递归方式实现打印一个整数的每一位

void Print(int n)
{
    if(n / 10)
    {
        Print(n / 10);
    }
    printf("%d ", n % 10);
}

int main7()
{
    int a = 0;
    scanf("%d", &a);
    Print(a);
    return 0;
}

//递归和非递归分别实现求n的阶乘（不考虑溢出的问题）

int fac1(int n)
{
    int i = 1;
    int ret = 1;
    if(n == 0)
        return ret;
    for(i = 1; i <= n; i++)
    {
        ret *= i;
    }
    return ret;
}
int fac(int n)
{
    if(n == 0)
        return 1;
    return n * fac(n - 1);
}
int main()
{
    int a = 0;
    scanf("%d", &a);
    printf("%d!=%d\n",a, fac(a));
    return 0;
}